#ifndef __LINKSTACK_H
#define __LINKSTACK_H


#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <unistd.h>
#include "kernel_list.h"

// 链表的节点（大结构体）
typedef struct node
{
    int data;
    struct list_head list; // 标准小结构体
}listnode, *linklist;

// 通用链式栈的管理结构体
typedef struct
{
    linklist top;
    int size;  // 当前有效栈元素总数
}stack;

// 初始化
stack * init_stack(void);

linklist new_node(int data);
// 入栈
bool push(stack *s, linklist new);
bool is_empty(stack *s);

// 出栈
bool pop(stack *s, int *pdata);


#endif